#ifndef HGL_PROCESS_INCLUDE
#define HGL_PROCESS_INCLUDE

#include<hgl/type/StringList.h>
namespace hgl
{
	/**
	* 进程管理类
	*/
	class Process																					///进程管理类
	{
		OSString work_path;
		OSString filename;
		StringList<OSString> args;

		int pid;

	public:

		Process()
		{
			pid=-1;
		}

		virtual ~Process()
		{
		}

		bool SetWorkPath(const OSString &wp);														///<设置工作目录
		bool SetExecFile(const OSString &ef);														///<设置执行文件
		void AddArgv(const OSString &argv){if(!argv.IsEmpty())args.Add(argv);}						///<增加一个参数
		void ClearArgs(){args.Clear();}																///<清除所有参数

		bool Execute();																				///<执行程序

		bool Wait();																				///<等待子进程暂停或是终止
		bool Kill();																				///<杀掉子进程
		bool RequestTerminate();																	///<请求子进程终止
	};//class Process
}//namespace hgl
#endif//HGL_PROCESS_INCLUDE
